/*
6-8 复数相乘运算
分数 10
作者 唐艳琴
单位 中国人民解放军陆军工程大学

本题要求实现一个函数，可计算两个复数相乘的积。
函数接口定义：

PLEX multi(PLEX a,PLEX b);

其中 a 和 b 都是复数，返回值也为复数，值为a*b的值。
*/

#include <stdio.h>
typedef struct {
    float re, im;
} PLEX;

PLEX multi(PLEX a, PLEX b);

int main() {
    PLEX x, y, z;
    scanf("%f%f", &x.re, &x.im);
    scanf("%f%f", &y.re, &y.im);
    z = multi(x, y);
    if (z.im >= 0)
        printf("%.2f+%.2fi", z.re, z.im);
    else
        printf("%.2f%.2fi", z.re, z.im);
    return 0;
}

/* 请在这里填写答案 */

/*
知识点：结构体，函数
PLEX 是一个结构体，包含两个成员变量，分别表示实部和虚部。
结构体作为函数参数，传递的是结构体的副本，函数中对结构体的修改不会影响原结构体。

复数相乘的公式：
(a+bi)*(c+di) = (ac-bd) + (ad+bc)i
*/

PLEX multi(PLEX a, PLEX b) {
    PLEX c;
    c.re = a.re * b.re - a.im * b.im;
    c.im = a.re * b.im + a.im * b.re;
    return c;
}